<?php

namespace Ipartek\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Ipartek\BlogBundle\Entity\Noticia;
use Ipartek\BlogBundle\Entity\Categoria;
use Symfony\Component\HttpFoundation\Request;

class PersistenciaController extends Controller
{
	
    public function insertAction()
    {
        //instanciar objeto de tipo Noticia
    	//$noticia = new Noticia();
    	//$fecha = new  \DateTime(date('Y-m-d H:i:s'));
    	
    	   	
        $noticia = new Noticia('noticia autogenerada '.rand ( 0 , 99999 ) , 'resumen de la noticasllll');       
        $categoria = $this->getDoctrine()->getRepository('IpartekBlogBundle:Categoria')->find(3);        
        $noticia->setCategoria($categoria);
        
        //usar metodos 'definitores' o 'setters' para rellenar objeto
        //$noticia->setTitle("Opel presenta la nueva generacion del FlexFix");        
        //se encargar el setter del 'title' del slug
        //$noticia->setSlug("opel-presenta-la-nueva-generacion-del-flexfix");
        //$noticia->setExcerpt("3Un comodo y seguro sistema de transporte de bicicletas");
        //$noticia->setContent("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec placerat malesuada pharetra. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas quam erat, tempor nec congue tincidunt, sodales id enim. Proin a risus vel arcu laoreet vulputate at ut sem. Duis eget dictum ipsum. Aliquam at quam vitae purus varius dignissim. Vestibulum nunc quam, aliquam eu hendrerit ut, viverra in felis. ");
           	
		//obtener manager de Doctrine    	
    	$em = $this->getDoctrine()->getManager();
    	//persistir objeto 
    	$em->persist($noticia);
    	//realmente no se persiste en la BBDD hasta hacer un 'flush'
    	$em->flush();
    	
    	//crear respuesta
    	//return new Response('Id de NOTICIA '.var_dump($noticia).' creada.');
    	return $this->render('IpartekBlogBundle:Default:noticia_detalle.html.twig', array('noticia'=>$noticia));
    	
    }
    
    
    public function mostrarAction(Request $request)
    {
    	
    	
    	$formato = $request->attributes->get('formato');
    	
    	$noticias = $this->getDoctrine()->getRepository('IpartekBlogBundle:Noticia')->findAll();
    	if (!$noticias) {
    		throw $this->createNotFoundException('No hay noticias');
    	}
    	else{
    		$this->container->get('logger')->debug("Noticias obtenidas:".sizeOf($noticias));
    		//return new Response(var_dump($noticias)."<br/> Noticias encontradas: ".sizeof($noticias));
    		return $this->render('IpartekBlogBundle:Default:index'.$formato.'.html.twig', array('noticias'=>$noticias));
    		
    	}
    }
    
    
    public function mostrarByIDAction($id)
    {
    	  	
    	$noticia = $this->getDoctrine()->getRepository('IpartekBlogBundle:Noticia')->find($id); 
    	if (!$noticia) {
    		throw $this->createNotFoundException('No hay noticia con ID='.$id);
    	}
    	else{
    		//return new Response(var_dump($noticia));
    		return $this->render('IpartekBlogBundle:Default:noticia_detalle.html.twig', array('noticia'=>$noticia));
    	}
    }
    
    
    public function modificarAction($id, $title_change)
    {
    	$em = $this->getDoctrine()->getManager();    	    	
    	$noticia = $em->getRepository('IpartekBlogBundle:Noticia')->find($id);
    	/* @var $noticia \Ipartek\BlogBundle\Entity\Noticia */    	
    	if (!$noticia) {
    		throw $this->createNotFoundException('No hay noticia con ID='.$id);
    	}
    	else{
    		$noticia->setTitle($title_change);
    		$em->flush();
    		return $this->render('IpartekBlogBundle:Default:noticia_detalle.html.twig', array('noticia'=>$noticia));
    	}
    }
    
    
    public function mostrarOrdenadoAction()
    {
    	$em = $this->getDoctrine()->getManager();
    	$repo= $em->getRepository('IpartekBlogBundle:Noticia');
    	/* @var $repo \Ipartek\BlogBundle\Entity\NoticiaRepository */    
    	$noticias = $repo->findAllOrderedByName();
    	if (!$noticias) {
    		throw $this->createNotFoundException('No hay noticias ');
    	}
    	else{    		
    		$em->flush();
    		return $this->render('IpartekBlogBundle:Default:index.html.twig', array('noticias'=>$noticias));
    	}
    }
   
    
}


